package com.wanqing.vo;

import com.wanqing.entity.VoucherRule;
import lombok.Data;

import java.beans.Transient;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 优惠券VO（视图对象）
 * 用于向前端展示优惠券信息
 */
@Data
public class VoucherVO {

    /**
     * 优惠券ID
     */
    private Long id;

    /**
     * 优惠券标题
     */
    private String title;

    /**
     * 副标题
     */
    private String subTitle;

    /**
     * 类型：0-普通券；1-秒杀券
     */
    private Byte type;

    /**
     * 状态：1-上架；2-下架
     */
    private Byte status;

    /**
     * 总库存
     */
    private Integer stock;

    /**
     * 通用有效期开始时间
     */
    private LocalDateTime validStartTime;

    /**
     * 通用有效期结束时间
     */
    private LocalDateTime validEndTime;

    /**
     * 秒杀开始时间
     */
    private LocalDateTime seckillStartTime;

    /**
     * 秒杀结束时间
     */
    private LocalDateTime seckillEndTime;

    /**
     * 优惠规则
     */
    private VoucherRule voucherRule;

    /**
     * 通用有效期（开始-结束）非数据库字段
     */
    private String validTimeRange;
    /**
     * 秒杀时间（开始-结束，仅秒杀券有）非数据库字段
     */
    private String seckillTimeRange;
    /**
     * 优惠描述（如：满200减50、8折优惠）非数据库字段
     */
    private String discountDesc;

    /**
     * 限用条件（品类+用户等级） 非数据库字段
     */
    private String limitDesc;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    // 格式化时间工具方法
    private String formatTime(LocalDateTime time) {
        return time == null ? "" : time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
    }

    // 设置通用有效期范围
    public void setValidTimeRange(LocalDateTime start, LocalDateTime end) {
        this.validTimeRange = formatTime(start) + " - " + formatTime(end);
    }

    // 设置秒杀时间范围
    public void setSeckillTimeRange(LocalDateTime start, LocalDateTime end) {
        this.seckillTimeRange = start == null ? "" : (formatTime(start) + " - " + formatTime(end));
    }
}
